﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
using System.Windows.Forms;

namespace Game.Klassen
{
    //Basisklasse für alle Vordergrundobjekte (Spielfeldunabhängige Position)
    abstract class ForeGroundObject
    {
        public Image image;
        public Point position;
        public Size  size;
        public bool  enabled;

        public abstract void    Update();
        public abstract Image   getImage();
    }



    //Luftblasen
    class FGBubble : ForeGroundObject
    {
        #region Initialisieren
        //Eigenschaften
        String movement;
        int direction;
        int movecount;

        //Konstruktoren
        public FGBubble(Point pos, Size size)
        {
            //Werte setzen
            this.image = Game.Properties.Resources.bubblefg;
            this.position = pos;
            this.size = size;
            this.movecount = 0;
            this.enabled = true;

            //Zufällige auswahl der Bewegungsrichtung
            direction = Session.rand.Next(0, 3);
            if (direction == 1)
                movement = "left";
            else
                movement = "right";
        }
        #endregion

        #region Tools

        //ObjektBild zurückgeben
        public override Image getImage()
        {
            return this.image;
        }

        //Blase ausschalten oder an Startposition setzen
        private void checkReset()
        {
            if (this.position.Y + this.size.Height < 0)
                this.position.Y = 800 + this.size.Height;
        }

        //Blasen leicht hin und her Bewegen lassen
        private void shake()
        {
            if (movement == "left")
                if (movecount > -10)
                {
                    position.X -= 1;
                    movecount--;
                }
                else
                    movement = "right";
            else if (movement == "right")
                if (movecount < 10)
                {
                    position.X += 1;
                    movecount++;
                }
                else
                    movement = "left";
        }

        #endregion

        //Updatemethode
        public override void Update()
        {
            if (enabled)
            {
                //Blasen aufsteigen lassen
                position.Y -= 1;

                //Blase zerstören wenn Sie oben angekommen ist oder wiederholen
                checkReset();

                //Blasen leicht hin und her Bewegen lassen
                shake();
            }
        }
    }

}


